100 REM **************************** 110 REM * * 120 REM * SIMPLEX 64 * 130 REM * * 140 REM * BY * 150 REM * * 160 REM * M. BUHTZ * 170 REM * * 180 REM * GRAFENRING 13 * 190 REM * 4230 WESEL * 200 REM * TEL.:0281/22431 * 210 REM * * 220 REM **************************** 230 : 240 PRINT"[147] SIMPLEX 64[146]":PRINT:PRINT 250 PRINT" 80 ZEICHENKARTE ? (J/N)" 260 GETA$ 270 IFA$="J"THEN W=5:GOTO300 280 IFA$="N"THEN W=1:GOTO300 290 GOTO260 300 PRINT:PRINT:PRINT 310 PRINT" DRUCKERAUSGABE ? (J/N)":PRINT 320 GETA$ 330 IFA$="N"THEN410 340 IFA$="J"THENE1=1:GOTO360 350 GOTO320 360 PRINT" ALLE LOESUNGEN ? (1)":PRINT 370 PRINT" NUR OPTIMUM ? (2)" 380 GETE$ 390 IFE$<>"1"ANDE$<>"2"THEN380 400 IFE$="2"THENE1=2 410 PRINT"[147] SIMPLEX 64[146]":PRINT:PRINT:PRINT:PRINT 420 INPUT" ANZAHL STRUKTURVARIABLEN ";N 430 PRINT 440 INPUT" ANZAHL RESTRIKTIONEN ";M 450 M=M+1 460 PRINT"[147] SIMPLEX 64[146]":PRINT:PRINT:PRINT:PRINT 470 DIM A(M,N),B(M,N),E(M),X$(N),X1$(N),Y$(M),Y1$(M) 480 PRINT" FREIE STRUKTURVARIABLEN ? (J/N)" 490 GETA$ 500 IFA$="J"THENDIM SP$(N) :GOTO 530 510 IFA$="N"THEN610 520 GOTO490 530 : 540 PRINT"[147] FREIE STRUKTURVARIABLEN[146]":PRINT 550 FORI=1TON 560 PRINT" IN SPALTE"I"? (J/N)" 570 GETA$ 580 IFA$=""THEN570 590 IFA$="J"THENSP$(I)="J" 600 NEXTI 610 : 620 PRINT"[147] SIMPLEX 64[146]":PRINT:PRINT:PRINT:PRINT 630 PRINT" GESPERRTE SCHLUPFVARIABLEN ? (J/N)" 640 GETA$ 650 IFA$="J"THENDIMZ$(M):GOTO680 660 IFA$="N"THEN770 670 GOTO640 680 : 690 PRINT"[147] GESPERRTE SCHLUPFVARIABLEN[146]":PRINT 700 FORI=1TOM-1 710 PRINT" IN ZEILE"I"? (J/N)" 720 GETA$ 730 IFA$=""THEN720 740 IFA$="J"THENZ$(I)="J" 750 NEXTI 760 : 770 REM *** EINGABE KOEFFIZIENTEN *** 780 : 790 FORI1=1TONSTEPW+1 800 PRINT"[147]" 810 PRINT,"*** SIMPLEX TABLEAU ***" :PRINT 820 X$(0)="RS " 830 PRINT, 840 I2=I1+W 850 IFI2>=NTHENI2=N 860 FORI=I1TOI2 870 X$(I)="X":X1$(I)=STR$(I):X$(I)=X$(I)+X1$(I) 880 PRINT"X"I, 890 NEXTI 900 IFI>NTHENPRINT"RS ", 910 J1=J2+1 920 J2=J1+W 930 IFJ2>=NTHENJ2=N 940 PRINT 950 FORI=0TOM-1 960 Y$(I)="Y":Y1$(I)=STR$(I):Y$(I)=Y$(I)+Y1$(I) 970 IFI=0THENPRINT:PRINT;" Z";:GOTO1000 980 IFI=1THENPRINT 990 PRINT:PRINT;"Y"I; 1000 FORJ=J1TOJ2 1010 PRINT,;:POKE19,1:INPUTA(I,J):POKE19,0 1020 NEXTJ 1030 IFJ>NTHENPRINT,"";:POKE19,1:INPUTA(I,0):POKE19,0 1040 NEXTI 1050 NEXTI1 1060 IFE1<>0THENGOSUB2790 1070 : 1080 REM*** PHASE 0' S(SPALTE) *** 1090 : 1100 FORI=1TON 1110 IFSP$(I)="J"THENS=I:SP$(I)="S":GOTO1170 1120 NEXTI 1130 GOTO1220 1140 : 1150 REM*** PHASE 0' R(ZEILE) *** 1160 : 1170 R=INT(RND(1)*M)+1:T=T+1 1180 IFZ$(R)="S"ORA(R,S)=0THEN1170 1190 IFT>100THEN2440 1200 T=0:GOTO1850 1210 : 1220 REM*** PHASE 0 R(ZEILE) *** 1230 : 1240 FORI=1TOM-1 1250 IFZ$(I)="J"THENR=I:Z$(I)="S":GOTO1310 1260 NEXTI 1270 GOTO1360 1280 : 1290 REM*** PHASE 0 S(SPALTE) *** 1300 : 1310 S=INT(RND(1)*N)+1:T=T+1 1320 IFSP$(S)="S"ORA(R,S)=0THEN1310 1330 IFT>100THEN2530 1340 T=0:GOTO1850 1350 : 1360 REM *** PHASE 1 R(ZEILE) *** 1370 : 1380 S=0:R=0 1390 FORI=1TOM-1 1400 IFA(I,0)<0THENR=I:GOTO1450 1410 NEXTI:GOTO1520 1420 : 1430 REM*** PHASE 1 S(SPALTE) *** 1440 : 1450 S=INT(RND(1)*N)+1:T=T+1 1460 IFT>100THEN2620 1470 IFA(R,S)>=0THEN1450 1480 IFR<>0THENT=0:GOTO 1850 1490 : 1500 REM *** PHASE 2 S(SPALTE) *** 1510 : 1520 S=0:R=0 1530 IFA(0,1)<0THENS=1 1540 FORJ=2TON 1550 IFA(0,J)>=0 OR A(0,J)>A(0,J-1) THEN 1570 1560 S=J 1570 NEXT J 1580 IFS>0THEN1710 1590 EE=1 1600 IFE1=2THENGOSUB2800 1610 PRINT 1620 PRINT" **** RECHNUNG BEENDET ****" 1630 PRINT" **** OPTIMUM ****" 1640 IFE1=0THEN1670 1650 OPEN4,4:PRINT#4:PRINT#4,CHR$(16)"11**** RECHNUNG BEENDET ****" 1660 PRINT#4,CHR$(16)"11**** OPTIMUM ****":PRINT#4:CLOSE4 1670 GETA$ 1680 IFA$<>""THEN2070 1690 GOTO1670 1700 : 1710 REM *** PHASE 2 R(ZEILE) *** 1720 : 1730 FORI=1TOM-1 1740 IFA(I,S)<=0THENE(I)=10^38:GOTO1760 1750 E(I)=A(I,0)/A(I,S) 1760 NEXTI 1770 IFE(1)>0THENR=1:GOTO1790 1780 E(1)=10^38 1790 FORI=2TOM-1 1800 IFE(I)<=0 OR E(I)>=E(I-1)THEN 1820 1810 R=I:GOTO1850 1820 NEXTI 1830 IFR<>1THEN2710 1840 : 1850 REM *** UMRECHNUNG *** 1860 : 1870 ZW$=X$(S):X$(S)=Y$(R):Y$(R)=ZW$ 1880 B(R,S)=1/A(R,S) 1890 : 1900 FORJ=0TON 1910 IFJ=STHEN1930 1920 B(R,J)=A(R,J)/A(R,S) 1930 NEXTJ 1940 : 1950 FORI=0TOM-1 1960 IFI=RTHEN1980 1970 B(I,S)=-A(I,S)/A(R,S) 1980 NEXTI 1990 : 2000 FORI=0TOM-1 2010 FORJ=0TON 2020 IFJ=S OR I=RTHEN2040 2030 B(I,J)=A(I,J)-A(I,S)*B(R,J) 2040 NEXTJ 2050 NEXTI 2060 : 2070 REM *** UMGERECHNETES SIMPLEX TABLEAU *** 2080 : 2090 IT=IT+1 2100 I1=0:I2=0:J1=0:J2=0 2110 FORI1=1TONSTEPW+1 2120 IFN<=W+1THEN2130 2130 PRINT"[147]" 2140 PRINT" *** SIMPLEX TABLEAU "IT"[157].ITERATION ***":PRINT 2150 PRINT, 2160 I2=I1+W 2170 IFI2=>NTHENI2=N 2180 FORI=I1TOI2 2190 PRINTX$(I), 2200 NEXTI 2210 IFI>NTHENPRINTX$(0) 2220 J1=J2+1 2230 J2=J1+W 2240 IFJ2>=NTHENJ2=N 2250 FORI=0TOM-1 2260 PRINT:PRINTY$(I); 2270 FORJ=J1TOJ2 2280 A(I,J)=B(I,J) 2290 A(I,0)=B(I,0) 2300 PRINT,"";:PRINTINT(A(I,J)*100+.5)/100; 2310 NEXTJ 2320 IFJ>NTHENPRINT,"";:PRINTINT(A(I,0)*100+.5)/100 2330 NEXTI 2340 IFEE<>1ORI1>=NTHEN2370 2350 GETA$ 2360 IFA$=""THEN2350 2370 NEXTI1 2380 : 2390 IFE1=1THENGOSUB2790 2400 GOTO1070 2410 : 2420 REM *** MELDUNGEN *** 2430 : 2440 PRINT:PRINT" *** RECHNUNG ABGEBROCHEN PHASE 0' ***" 2450 PRINT" *** LINEARKOMBINATION SPALTEN ***" 2460 IFE1=2THENGOSUB2800 2470 IFE1=0THENEND 2480 OPEN4,4:PRINT#4 2490 PRINT#4,CHR$(16)"11*** RECHNUNG ABGEBROCHEN PHASE 0' ***" 2500 PRINT#4,CHR$(16)"11*** LINEARKOMBINATION SPALTEN ***" 2510 PRINT#4:CLOSE4:END 2520 : 2530 PRINT:PRINT" *** RECHNUNG ABGEBROCHEN PHASE 0 ***" 2540 PRINT" *** LINEARKOMBINATION ZEILEN ***" 2550 IFE1=2THENGOSUB2800 2560 IFE1=0THENEND 2570 OPEN4,4:PRINT#4 2580 PRINT#4,CHR$(16)"11*** RECHNUNG ABGEBROCHEN PHASE 0 ***" 2590 PRINT#4,CHR$(16)"11*** LINEARKOMBINATION ZEILEN ***" 2600 PRINT#4:CLOSE4:END 2610 : 2620 PRINT:PRINT" *** RECHNUNG ABGEBROCHEN PHASE 1 ***" 2630 PRINT" *** KEINE ZULAESSIGE LOESUNG ***" 2640 IFE1=2THENGOSUB2800 2650 IFE1=0THENEND 2660 OPEN4,4:PRINT#4 2670 PRINT#4,CHR$(16)"11*** RECHNUNG ABGEBROCHEN PHASE 1 ***" 2680 PRINT#4,CHR$(16)"11*** KEINE ZULAESSIGE LOESUNG ***":PRINT#4:CLOSE4:END 2690 PRINT#4:CLOSE4:END 2700 : 2710 PRINT:PRINT" *** RECHNUNG ABGEBROCHEN PHASE 2 ***" 2720 PRINT" *** KEINE BEGRENZTE LOESUNG ***" 2730 IFE1=2THENGOSUB2800 2740 IFE1=0THENEND 2750 OPEN4,4:PRINT#4 2760 PRINT#4,CHR$(16)"11*** RECHNUNG ABGEBROCHEN PHASE 2 ***" 2770 PRINT#4,CHR$(16)"11*** KEINE BEGRENZTE LOESUNG ***":PRINT#4:CLOSE4:END 2780 PRINT#4:CLOSE4:END 2790 : 2800 REM *** DRUCKERAUSGABE *** 2810 : 2820 OPEN4,4 2830 I2=0:J1=0:J2=0 2840 FORI1=1TONSTEP4 2850 PRINT#4,CHR$(10) 2860 PRINT#4,CHR$(16)"10*** SIMPLEX TABLEAU"IT".ITERATION ***" 2870 PRINT#4 2880 I2=I1+3 2890 IFI2>=NTHENI2=N 2900 Z=0 2910 FORI=I1TOI2 2920 Z=Z+1 2930 ONZGOSUB3260,3270,3280,3290,3300 2940 : 2950 NEXTI 2960 IFI<=NTHEN2990 2970 I=0:Z=Z+1 2980 ONZGOSUB3260,3270,3280,3290,3300 2990 J1=J2+1 3000 J2=J1+3 3010 IFJ2>=NTHENJ2=N 3020 PRINT#4 3030 FORI=0TOM-1 3040 IFI=0THENPRINT#4:PRINT#4," Z",:GOTO3070 3050 IFI=1THENPRINT#4 3060 PRINT#4:PRINT#4,Y$(I), 3070 Z=0 3080 FORJ=J1TOJ2 3090 IFIT=0THEN3120 3100 A(I,J)=B(I,J) 3110 A(I,0)=B(I,0) 3120 Z=Z+1 3130 ONZGOSUB3210,3220,3230,3240,3250 3140 NEXTJ 3150 IFJ<=NTHEN3180 3160 J=0:Z=Z+1 3170 ONZGOSUB3210,3220,3230,3240,3250 3180 NEXTI 3190 NEXTI1 3200 PRINT#4:CLOSE4:RETURN 3210 PRINT#4,CHR$(16)"13"INT(A(I,J)*100+.5)/100;:RETURN 3220 PRINT#4,CHR$(16)"26"INT(A(I,J)*100+.5)/100;:RETURN 3230 PRINT#4,CHR$(16)"39"INT(A(I,J)*100+.5)/100;:RETURN 3240 PRINT#4,CHR$(16)"52"INT(A(I,J)*100+.5)/100;:RETURN 3250 PRINT#4,CHR$(16)"65"INT(A(I,J)*100+.5)/100;:RETURN 3260 PRINT#4,CHR$(16)"14"X$(I);:RETURN 3270 PRINT#4,CHR$(16)"27"X$(I);:RETURN 3280 PRINT#4,CHR$(16)"40"X$(I);:RETURN 3290 PRINT#4,CHR$(16)"53"X$(I);:RETURN 3300 PRINT#4,CHR$(16)"66"X$(I);:RETURN